home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 63.zip / BS1 part 63 / Video Tracker dev. kit d1.adf / Source / PictureMove.s < prev    next >
Text File  |  1993-08-09  |  36KB  |  1,767 lines

  1. rout            ;when this is off, the routine-file will be
  2.             ;assembled, on=testing
  3.             
  4. ;debug            ;when this is on, colors in the background will
  5.             ;show how much time the routine needs.
  6.  
  7.  
  8. routinemode    equ    67    ;the routinemode !
  9.  
  10.  
  11. ; the first part of the source handles the things that are necessary to
  12. ; show the picture/copper and playing of the routine.
  13. ; the part between the "***" lines is the routine-source.
  14. ; at the bottom of the file, there are the necessary incbin-files who
  15. ; are needed to test the routine.
  16. ; these are saved with "save effect" in videotracker. they are raw
  17. ; data files which can be fonts,pictures,landscapes,vectorobjects
  18. ; etcetra.
  19. ; the incbin-files are put in the "variables" table, in the routine-
  20. ; player-handler
  21. ; the place where it's done can be found by searching for "!!!"
  22.  
  23.  
  24.     opt    a+    ;devpac 3 optimize
  25.     opt    o+
  26.  
  27.     ifd    rout
  28.     
  29.     ;videotracker routine-test
  30.  
  31.     incdir    "videotracker:include/"
  32.     include    "exec/types.i"
  33.     include    "graphics/gfxbase.i"
  34.     include    "lvo/graphics_lib.i"
  35.     incdir    'videotracker:effect/'
  36.  
  37. vew_wid    equ    44
  38. vew_hgt    equ    290
  39. win_hgt    equ    117
  40. win_str    equ    $1a
  41.  
  42.     SECTION    1,CODE_C
  43. tus
  44.  
  45.  
  46.     move.l    ($4).w,a6
  47.     sub.l    a1,a1
  48.     jsr    -$126(a6)        ;findtask
  49.     move.l    d0,curtsk
  50.     move.l    d0,a0
  51.     move.l    $b8(a0),tskpri
  52.  
  53.     lea    dosnam,a1        ;doslib openen
  54.     moveq.l    #0,d0
  55.     move.l    (4).w,a6
  56.     jsr    -408(a6)        ;openlib
  57.     move.l    d0,doslib
  58.  
  59.     bsr.s    label5            ;videotracker opstarten
  60.     
  61.     move.l    curtsk,a0
  62.     move.l    tskpri,$b8(a0)
  63.     move.l    ($4).w,a6
  64.     jsr    -$84(a6)        ;forbid
  65.  
  66.     move.l    doslib,a1
  67.     move.l    (4).w,a6
  68.     jsr    -414(a6)        ;closelib
  69.  
  70.     moveq.l    #0,d0
  71.     rts
  72.     
  73. label5
  74.     move.l    (4).w,a6        ;workbench gedoe
  75.     move.b    530(a6),ntscmode    ;50/60 hertz halen
  76.  
  77.     cmp.b    #50,ntscmode        ;ntsc ?
  78.     beq.s    str.ntsc
  79.     move.l    #vew_hgt-56,hogscr    ;set NTSC screen hight
  80. str.ntsc
  81.  
  82.     move.l    (4).w,a6        ;68030 cache off 
  83.     jsr    -120(a6)
  84.  
  85.     btst.b    #1,297(a6)
  86.     beq.s    str.nfc
  87.     lea.l    str.ft,a5
  88.     jsr    -30(a6)
  89. str.nfc
  90.     jsr    -126(a6)
  91.     bra.s    str.fc
  92.     
  93. str.ft
  94.     dc.w    $4e7a,2
  95.     bclr    #0,d0
  96.     bset    #13,d0
  97.     dc.w    $4e7b,2
  98.     rte
  99. str.fc
  100.  
  101.     lea    cprjmp,a2        ;copjmp zetten !
  102.     move.l    #cprbck-8,d0
  103.     move.w    d0,6(a2)
  104.     swap    d0
  105.     move.w    d0,2(a2)
  106.  
  107.     lea    cprbck-8,a2        ;copstr zetten !
  108.     move.l    #cpr,d0
  109.     move.w    d0,6(a2)
  110.     swap    d0
  111.     move.w    d0,2(a2)
  112.  
  113.     bsr    cprsprrem        ;sprites legen
  114.  
  115.     lea    gfxnam,a1        ;graphics lib openen
  116.     move.l    (4).w,a6
  117.     jsr    -408(a6)        ;openlib
  118.     move.l    d0,a6
  119.     move.l    d0,gfxlib
  120.     move.l    38(a6),oldcprlist
  121.  
  122.     bset    #1,$bfe001
  123.     bsr    copbuf            ;copper vullen
  124.  
  125.     bsr    sysoff
  126.  
  127. gadrun
  128.     btst    #6,($bfe001).l
  129.     bne    gadrun
  130.  
  131. scrend
  132. scrend.play
  133.     bsr    syson
  134.  
  135.     move.l    gfxlib,a1
  136.     move.l    (4).w,a6
  137.     jsr    -414(a6)        ;closelib
  138.  
  139. scrend.qb
  140.     moveq.l    #0,d0    
  141.     rts
  142.     
  143.     ;vertical blank interrupt, no blits.
  144.     ;handles counters,interlace,sprite
  145.     ;level 3
  146.  
  147. intvb
  148.     bra.s    intvb.cnt
  149.     dc.l    'VIDU'
  150.     dc.l    'LOOP'
  151. intvb.cnt
  152.     movem.l    d0-d7/a0-a6,-(sp)
  153.     lea    ($dff000).l,a6
  154.  
  155.     move.w    $01e(a6),d0
  156.     btst    #5,d0            ;vblank ?
  157.     bne.s    intvb.vb
  158.  
  159.     bra.s    intcop.end
  160.  
  161. intvb.vb
  162.     bsr    grap
  163.     bsr    palctr            ;palette zetten
  164.     bsr.s    copbuf            ;copper vullen
  165.     
  166. intvb.end
  167.     move.w    #$0020,$09c(a6)    ;vb bit wissen
  168.     movem.l    (sp)+,d0-d7/a0-a6    ;multitask uit, shit !
  169.     rte
  170.  
  171. intcop.end
  172.     movem.l    (sp)+,d0-d7/a0-a6
  173.     move.l    intvbold,-(sp)
  174.     rts
  175.  
  176.     ;transmission buffer empty routine, BLIT !
  177.     ;handles routines,animations
  178.     
  179. inttbe                    ;tbe interrupt
  180.     movem.l    d0-d7/a0-a6,-(sp)
  181.     lea    ($dff000).l,a6
  182.  
  183.     move.w    $01e(a6),d0
  184.     btst    #0,d0            ;no tbe ?
  185.     beq.s    intdskblk
  186.  
  187.  
  188.     btst    #6,($bfe001).l        ;muis ingedrukt ?
  189.     beq.s    inttbe.cop
  190.     btst    #2,($dff016).l
  191.     beq.s    inttbe.cop
  192.  
  193.     ifd    debug
  194.     move.w    #$700,$dff180
  195.     endc
  196.     
  197.     bsr    rotply            ;routineplayer BLIT !
  198.     bsr.s    copbuf            ;copper vullen
  199.  
  200.     ifd    debug
  201.     move.w    #$070,$dff180
  202.     endc
  203.     
  204. inttbe.cop
  205.  
  206. inttbe.end
  207.     move.w    #$0001,$09c(a6)
  208.     movem.l    (sp)+,d0-d7/a0-a6
  209.     rte
  210.  
  211. intdskblk
  212.     move.w    #$0001,$09c(a6)        ;be sure for no tbe handling
  213.     movem.l    (sp)+,d0-d7/a0-a6
  214.     move.l    inttbeold,-(sp)
  215.     rts
  216.  
  217.  
  218.     ;moves the copperbuffer to the copperlist
  219.     ;sort of double buffering
  220.     
  221. copbuf
  222.     movem.l    d0-d7/a0-a6,-(sp)
  223.  
  224.     lea    ($dff000).l,a6
  225.  
  226. copbuf.novb                ;copperchange overslaan
  227.     moveq.l    #0,d0
  228.     move.b    $005(a6),d0
  229.     lsl.w    #8,d0
  230.     moveq.l    #0,d1
  231.     move.b    $006(a6),d1
  232.     add.w    d1,d0
  233.  
  234.     cmp.w    #$4,d0
  235.     blt    copbuf.novb
  236.  
  237.     cmp.b    #50,ntscmode
  238.     beq.s    copbuf.pal
  239.     cmp.w    #$133-56-8,d0        ;ntsc grens
  240.     bge    copbuf.novb
  241.     bra.s    copbuf.cont
  242. copbuf.pal
  243.     cmp.w    #$133-8,d0        ;pal grens
  244.     bge    copbuf.novb
  245. copbuf.cont
  246.  
  247.     lea    gra.s,a0        ;buffer copieren
  248.     lea    cprbuf,a1
  249.  
  250.     move.w    00*4+2(a0),00*4+2(a1)
  251.     move.w    01*4+2(a0),01*4+2(a1)
  252.     move.w    02*4+2(a0),02*4+2(a1)
  253.     move.w    03*4+2(a0),03*4+2(a1)
  254.     move.w    04*4+2(a0),04*4+2(a1)
  255.     move.w    05*4+2(a0),05*4+2(a1)
  256.     move.w    06*4+2(a0),06*4+2(a1)
  257.     move.w    07*4+2(a0),07*4+2(a1)
  258.     move.w    08*4+2(a0),08*4+2(a1)
  259.     move.w    09*4+2(a0),09*4+2(a1)
  260.  
  261.     move.w    10*4+2(a0),10*4+2(a1)
  262.     move.w    11*4+2(a0),11*4+2(a1)
  263.     move.w    12*4+2(a0),12*4+2(a1)
  264.     move.w    13*4+2(a0),13*4+2(a1)
  265.     move.w    14*4+2(a0),14*4+2(a1)
  266.     move.w    15*4+2(a0),15*4+2(a1)
  267.     move.w    16*4+2(a0),16*4+2(a1)
  268.     move.w    17*4+2(a0),17*4+2(a1)
  269.     move.w    18*4+2(a0),18*4+2(a1)
  270.     move.w    19*4+2(a0),19*4+2(a1)
  271.  
  272.     move.w    20*4+2(a0),20*4+2(a1)
  273.     move.w    21*4+2(a0),21*4+2(a1)
  274.     move.w    22*4+2(a0),22*4+2(a1)
  275.     move.w    23*4+2(a0),23*4+2(a1)
  276.     move.w    24*4+2(a0),24*4+2(a1)
  277.     move.w    25*4+2(a0),25*4+2(a1)
  278.     move.w    26*4+2(a0),26*4+2(a1)
  279.     move.w    27*4+2(a0),27*4+2(a1)
  280.     move.w    28*4+2(a0),28*4+2(a1)
  281.     move.w    29*4+2(a0),29*4+2(a1)
  282.  
  283.     move.w    30*4+2(a0),30*4+2(a1)
  284.     move.w    31*4+2(a0),31*4+2(a1)
  285.     move.w    32*4+2(a0),32*4+2(a1)
  286.     move.w    33*4+2(a0),33*4+2(a1)
  287.     move.w    34*4+2(a0),34*4+2(a1)
  288.     move.w    35*4+2(a0),35*4+2(a1)
  289.     move.w    36*4+2(a0),36*4+2(a1)
  290.     move.w    37*4+2(a0),37*4+2(a1)
  291.     move.w    38*4+2(a0),38*4+2(a1)
  292.     move.w    39*4+2(a0),39*4+2(a1)
  293.  
  294.     move.w    40*4+2(a0),40*4+2(a1)
  295.     move.w    41*4+2(a0),41*4+2(a1)
  296.     move.w    42*4+2(a0),42*4+2(a1)
  297.     move.w    43*4+2(a0),43*4+2(a1)
  298.     move.w    44*4+2(a0),44*4+2(a1)
  299.     move.w    45*4+2(a0),45*4+2(a1)
  300.     move.w    46*4+2(a0),46*4+2(a1)
  301.     move.w    47*4+2(a0),47*4+2(a1)
  302.     move.w    48*4+2(a0),48*4+2(a1)
  303.     move.w    49*4+2(a0),49*4+2(a1)
  304.  
  305.     move.w    50*4+2(a0),50*4+2(a1)
  306.     move.w    51*4+2(a0),51*4+2(a1)
  307.     move.w    52*4+2(a0),52*4+2(a1)
  308.     move.w    53*4+2(a0),53*4+2(a1)
  309.     move.w    54*4+2(a0),54*4+2(a1)
  310.  
  311. copbuf.end
  312.     movem.l    (sp)+,d0-d7/a0-a6
  313.     rts
  314.  
  315.     ;goes back to the workbench
  316.     
  317. syson
  318.     movem.l    d0-d7/a0-a6,-(sp)
  319.  
  320.     move.w    #$0001,$dff09a        ;tbeint uit
  321.     move.l    intvbold,($6c).w
  322.     move.l    inttbeold,($64).w
  323.  
  324.     move.l    4,a6
  325.     jsr    -138(a6)        ;permit
  326.  
  327.     move.l    gfxlib,a6
  328.     jsr    -462(a6)        ;disownblitter
  329.  
  330.     move.l    wbview,a1
  331.     move.l    gfxlib,a6
  332.     jsr    _LVOLoadView(a6)     ; Fix view
  333.     jsr    _LVOWaitTOF(a6)
  334.     jsr    _LVOWaitTOF(a6)         ; wait for LoadView()
  335.  
  336. syson.ras
  337.     cmp.b    #$c0,$dff006        ;prevent copperjump
  338.     bne    syson.ras
  339.  
  340.     move.l    gfxlib,a6
  341.     move.l    gb_copinit(a6),$dff080     ; Kick it into life
  342.  
  343.     movem.l    (sp)+,d0-d7/a0-a6
  344.     rts
  345.     
  346.     ;goes back to the gadgetscreen
  347.     
  348. sysoff
  349.     movem.l    d0-d7/a0-a6,-(sp)
  350.      
  351.     move.l    gfxlib,a6
  352.     move.l    gb_ActiView(a6),wbview    ;current view
  353.     sub.l    a1,a1            ; clear a1
  354.     jsr     _LVOLoadView(a6)     ; Flush View to nothing
  355.     jsr    _LVOWaitTOF(a6)     ; Wait once
  356.     jsr    _LVOWaitTOF(a6)     ; Wait again.
  357.  
  358.     move.l    gfxlib,a6
  359.     jsr    -456(a6)        ;ownblitter
  360.  
  361.     move.l    4,a6
  362.     jsr    -132(a6)        ;forbid
  363.         
  364.     move.l    ($6c).w,intvbold
  365.     move.l    #intvb,($6c).w
  366.     move.l    ($64).w,inttbeold
  367.     move.l    #inttbe,($64).w
  368.     move.w    #$8001,$dff09a        ;tbeint aan
  369.     bsr    gracpr            ;reset copper
  370.     bsr    copbuf            ;copy copper
  371.     move.l    #cpr,$dff080
  372.  
  373.     movem.l    (sp)+,d0-d7/a0-a6
  374.     rts
  375.     
  376. cprsprrem
  377.     movem.l    d0-d7/a0-a6,-(sp)
  378.     lea    cprspr,a0
  379.     move.l    #sprdat,d0
  380.     move.w    #7,d1
  381. cprsprrem.a
  382.     move.w    d0,3*2(a0)
  383.     swap    d0
  384.     move.w    d0,1*2(a0)
  385.     swap    d0
  386.     add.l    #8,a0
  387.     dbra    d1,cprsprrem.a
  388.     movem.l    (sp)+,d0-d7/a0-a6
  389.     rts
  390.  
  391. varset                    ;variablen neerzetten
  392.     movem.l    d0-d7/a0-a6,-(sp)
  393.     move.l    #var,a0
  394.  
  395.     move.l    #cprbck,var_cprbck(a0)
  396.     move.l    gfxlib,var__GfxBase(a0)
  397.     move.b    ntscmode,var_ntsc(a0)
  398.  
  399.     move.l    curpic1,var_pic1(a0)    ;variabel
  400.     move.l    curpic2,var_pic2(a0)    ;variabel
  401.     move.w    anispd1,var_anispd1(a0)
  402.     move.w    anitel1,var_anitel1(a0)
  403.     movem.l    (sp)+,d0-d7/a0-a6
  404.     rts
  405.     
  406.     ;this routine handles all videotracker-routines
  407.  
  408. rotply    
  409.     movem.l    d0-d7/a0-a6,-(sp)
  410.  
  411.     moveq.l    #0,d0
  412.  
  413.     lea    currot1,a2        ;routine 1
  414.     move.w    rotinf1,d0        ;routine info
  415.     bsr.s    rotplyr
  416.  
  417. rotply.end
  418.     movem.l    (sp)+,d0-d7/a0-a6
  419.     rts
  420.  
  421.     ;this routine handles 1 routine, BLIT !
  422.     
  423. rotplyr
  424.     movem.l    d0-d7/a1-a6,-(sp)
  425.  
  426.     move.l    #rot,(a2)        ;routinestart address
  427.  
  428.     move.b    #50,ntscmode        ;ntsc/pal hz
  429.     move.l    #rotincpic,curpic1    ;incbinfile !!!
  430.     clr.l    curpic2            ;background picture
  431.     move.w    #1,anispd1        ;animationspeed
  432.     clr.w    anitel1            ;animation position
  433.  
  434.     lea    var,a0            ;communication-table
  435.  
  436.     move.l    #routinemode,d0        ;routinemode !!!
  437.  
  438.     sub.l    a0,a0            ;picture info legen
  439.  
  440.     tst.l    (a2)            ;is er een routine ?
  441.     beq    rotplyr.end        ;interlace handling
  442.  
  443.     move.l    intdel,d2        ;delay
  444.     move.l    inttel,d1        ;teller
  445.     cmp.w    d2,d1
  446.     blt    rotplyr.end
  447.     clr.l    inttel
  448.                 
  449.     bsr    varset            ;variabelen updaten
  450.  
  451.     move.l    (a2),a1            ;routine halen
  452.     move.l    #var,a0            ;variablen tabel
  453.  
  454.     movem.l    d3-d7/a1-a6,-(sp)
  455.     moveq.l    #0,d1            ;vars wissen
  456.     moveq.l    #0,d2
  457.     moveq.l    #0,d3
  458.     moveq.l    #0,d4
  459.     moveq.l    #0,d5
  460.     moveq.l    #0,d6
  461.     moveq.l    #0,d7
  462.     sub.l    a2,a2
  463.     sub.l    a3,a3
  464.     sub.l    a4,a4
  465.     sub.l    a5,a5
  466.  
  467.     jsr    4(a1)            ;routine afwerken
  468.     movem.l    (sp)+,d3-d7/a1-a6
  469.  
  470.     ;Routine:
  471.     ;
  472.     ;Input:
  473.     ;a0=variabelentabel
  474.     ;d0=routinemode
  475.     ;
  476.     ;Output:
  477.     ;a0=picture
  478.     ;d1=copperlist
  479.     ;d2=interruptdelay        (NOT used till now)
  480.     
  481.     move.w    #$0020,$dff09a        ;vb off !
  482.  
  483.     move.l    d2,intdel        ;delay
  484.  
  485.     lea    cprjmp,a3
  486.     move.l    #cprbck-8,d0
  487.  
  488.     cmp.l    (a2),a1            ;routine ondertussen gewipt ?
  489.     bne.s    rotplyr.nocop
  490.     tst.l    d1            ;copperlist ?
  491.     beq.s    rotplyr.nocop
  492.     move.l    d1,d0
  493. rotplyr.nocop
  494.     move.w    d0,6(a3)
  495.     swap    d0
  496.     move.w    d0,2(a3)
  497.  
  498.     cmp.l    #0,a0            ;picture ?
  499.     beq.s    rotplyr.endvb
  500.  
  501.     move.l    a0,curpic1        ;current picture (cycle)
  502.     move.l    a0,curpal1        ;current palette
  503.  
  504.     tst.b    rotdpl            ;plane is geleverd
  505.     beq.s    rotplyr.set
  506.     clr.b    rotdpl
  507.     clr.l    cycdel1            ;cycle info wissen
  508.     clr.l    4+cycdel1
  509.     clr.l    curfrm1            ;curfrm1, altijd planes zetten
  510. rotplyr.set
  511.     clr.b    dplctr
  512.     bsr.s    grap
  513.     bsr    grac            ;colorset
  514. rotplyr.endvb
  515.     move.w    #$8020,$dff09a
  516. rotplyr.end
  517.     movem.l    (sp)+,d0-d7/a1-a6
  518.     rts
  519.  
  520.     ;removes possible routine-coppers
  521.     
  522. gracpr
  523.     movem.l    d0-d7/a0-a6,-(sp)
  524.     lea    cprjmp,a3
  525.     move.l    #cprbck-8,d0        ;copperlist resetten
  526.     move.w    d0,6(a3)
  527.     swap    d0
  528.     move.w    d0,2(a3)
  529.     movem.l    (sp)+,d0-d7/a0-a6
  530.     rts
  531.  
  532.     ;picture-to-copper routine, communicates with the
  533.     ;anim-player
  534.     
  535. grap                    ;d7=anim
  536.     movem.l    d0-d7/a0-a6,-(sp)
  537.  
  538.     clr.l    d7
  539.     
  540.     tst.l    curpic1            ;current picture ?
  541.     beq    grap.end
  542.  
  543.     move.l    curpic1,a2        ;normal pic halen
  544.  
  545.     lea    gracprscr,a1        ;window neerzetten
  546.     move.l    hogscr,d1
  547.  
  548.     move.w    pic_hgt(a2),d3        ;pic hoogte
  549.     move.w    pic_vew(a2),d5
  550.     btst    #2,d5            ;interlace ?
  551.     beq.s    grap.nohi4
  552.     lsr.w    #1,d3            ;/2
  553. grap.nohi4
  554.     cmp.w    d3,d1
  555.     bge.s    grap.hog
  556.     move.w    d1,d3
  557. grap.hog
  558.     sub.w    d3,d1
  559.     lsr.w    #1,d1
  560.     add.w    #win_str,d1
  561.     move.w    d1,d2
  562.     add.w    d3,d2
  563.  
  564.  
  565.     move.b    d1,2(a1)        ;y start
  566.     move.b    d2,6(a1)        ;y end
  567.  
  568.     move.w    pic_wid(a2),d4        ;pic breedte in bytes
  569.     lsl.l    #3,d4
  570.  
  571.     move.l    #vew_wid*8,d0
  572.     move.l    #0,d1
  573.     move.l    #$71,d6
  574.  
  575.     move.w    pic_vew(a2),d5
  576.     btst    #15,d5            ;hires ?
  577.     beq.s    grap.nohi2
  578.  
  579.     move.l    #(vew_wid-4)*8*2,d0
  580.     move.l    #1,d1
  581.     move.l    #$81,d6
  582.  
  583.     cmp.w    #80,pic_wid(a2)        ;overscan ?
  584.     ble.s    grap.nohi2
  585.     move.l    #(vew_wid)*8*2,d0
  586.     move.l    #$61,d6
  587.  
  588. grap.nohi2    
  589.     btst    #6,d5            ;super hires ?
  590.     beq.s    grap.noshi2
  591.  
  592.     move.l    #(vew_wid-4)*8*4,d0
  593.     move.l    #2,d1
  594.     move.l    #$81,d6
  595.  
  596.     cmp.w    #80*2,pic_wid(a2)    ;overscan ?
  597.     ble.s    grap.noshi2
  598.     move.l    #(vew_wid)*8*4,d0
  599.     move.l    #$61,d6
  600.  
  601. grap.noshi2    
  602.  
  603.     clr.w    d5
  604.     cmp.w    d0,d4            ;breeder dan scherm ?
  605.     ble.s    grap.c
  606.     move.w    d4,d5
  607.     move.w    d0,d4
  608.     sub.w    d0,d5            ;modulo
  609.     lsr.w    #3,d5            ;/8
  610. grap.c
  611.     lsr.w    d1,d0
  612.     lsr.w    d1,d4
  613.  
  614.     move.w    d0,d2
  615.     sub.w    d4,d2
  616.     lsr.w    #1,d2            ;/2
  617.  
  618.     add.w    d6,d2
  619.     move.b    d2,3(a1)        ;x start
  620.     move.w    d2,d3            ;d3 bewaren !
  621.  
  622.     add.w    d4,d2            ;d4 bewaren !
  623.     move.b    d2,7(a1)        ;x end
  624.     
  625.     move.w    pic_vew(a2),d6
  626.     btst    #15,d6            ;hires ?
  627.     beq.s    grap.nohi5    
  628.     add.l    d4,d4            ;*2
  629. grap.nohi5
  630.     btst    #6,d6            ;super hires ?
  631.     beq.s    grap.noshi5    
  632.     add.l    d4,d4            ;*4
  633. grap.noshi5
  634.  
  635.     move.l    d7,-(sp)
  636.     move.w    pic_vew(a2),d6
  637.     move.l    #17,d0
  638.     move.l    #1,d1
  639.     move.l    #3,d7
  640.  
  641.     btst    #15,d6            ;hires ?
  642.     beq.s    grap.nohi3    
  643.     move.l    #9,d0
  644.     move.l    #2,d1
  645.     move.l    #2,d7
  646. grap.nohi3
  647.     btst    #6,d6            ;super hires ?
  648.     beq.s    grap.noshi3    
  649.     move.l    #9,d0
  650.     move.l    #2,d1
  651.     move.l    #1,d7
  652. grap.noshi3
  653.     sub.w    d0,d3
  654.     lsr.w    #1,d3
  655.     move.w    d3,10(a1)        ;ddfstrt
  656.     
  657.     move.w    d4,d2            ;pic breedte in pixels
  658.     lsr.w    #4,d2            ;/16
  659.     sub.w    d1,d2            ;-1
  660.  
  661.     lsl.w    d7,d2            ;*8
  662.     add.w    d2,d3
  663.     move.w    d3,14(a1)        ;ddfstop
  664.     move.l    (sp)+,d7
  665.     
  666.     lea    pic_raw(a2),a0
  667.  
  668.     moveq.l    #0,d2
  669.     move.w    pic_dpt(a2),d2
  670.     sub.l    #1,d2
  671.     muls    pic_wid(a2),d2
  672.     add.w    d2,d5
  673.  
  674.     move.w    pic_vew(a2),d2        ;viewmode add
  675.     btst    #2,d2
  676.     beq.s    grap.nolace4
  677.  
  678.     moveq.l    #0,d2
  679.     move.w    pic_dpt(a2),d2
  680.     muls    pic_wid(a2),d2
  681.     add.w    d2,d5            ;interlace gedoe
  682. grap.nolace4
  683.  
  684.     lea    gracprbpl,a4        ;iffpln neerzetten
  685.     lea    gracprpln,a0        ;iffpln neerzetten
  686.     moveq.l    #0,d2
  687.     move.w    pic_dpt(a2),d2        ;plnnummer 1 halen
  688.     move.l    #8,d6            ;copper step !
  689.  
  690.     tst.l    curpic2            ;2de picture ?
  691.     bne.s    grap.pic2
  692. grap.nopic2
  693.     move.w    d5,34(a1)        ;modulo oneven zetten
  694.     bra    grap.nodpl
  695. grap.pic2
  696.     move.l    curpic2,a3        ;oneven plane
  697.     move.l    currot2,a5        ;oneven plane
  698.     clr.l    curpic2            ;mischien niet goed
  699.     clr.l    curpal2            ;mischien niet goed
  700.     clr.l    currot2            ;mischien niet goed
  701.  
  702.     cmp.l    curpic1,a3        ;picture hetzelfde ?
  703.     beq    grap.nopic2
  704.     
  705.     cmp.l    #0,currot1        ;routine ?    
  706.     beq.s    grap.norot
  707.     cmp.l    currot1,a5        ;routine hetzelfde ?
  708.     beq    grap.nopic2
  709. grap.norot
  710.  
  711.     cmp.b    #3,d2            ;> 8 kleuren ?
  712.     bgt    grap.nopic2
  713.     move.w    pic_dpt(a3),d3        ;plnnummer 2 halen
  714.     cmp.b    d2,d3            ;gelijke plnummers ?
  715.     bne    grap.nopic2
  716.     move.w    pic_vew(a2),d1
  717.     cmp.w    pic_vew(a3),d1        ;view gelijk ?
  718.     bne    grap.nopic2
  719.  
  720.     move.w    pic_vew(a2),d1        ;groter dan view test
  721.     btst    #6,d1            ;super hires ?
  722.     beq.s    grap.nohi2a
  723.     move.l    #vew_wid*4,d1
  724.     bra.s    grap.nohi2b
  725. grap.nohi2a
  726.     btst    #15,d1            ;hires ?
  727.     beq.s    grap.noshi2a
  728.     move.l    #vew_wid*2,d1
  729.     bra.s    grap.nohi2b
  730. grap.noshi2a
  731.     move.l    #vew_wid,d1
  732. grap.nohi2b
  733.     cmp.w    pic_wid(a2),d1        ;breder dan view ?
  734.     bgt.s    grap.small
  735.     cmp.w    pic_wid(a3),d1        ;breder dan view ?
  736.     bgt.s    grap.small
  737.  
  738.     move.w    pic_vew(a2),d1
  739.     btst    #2,d1
  740.     beq.s    grap.nolace8a
  741.     move.l    hogscr,d1
  742.     add.l    d1,d1
  743.     bra.s    grap.nolace8b
  744. grap.nolace8a
  745.     move.l    hogscr,d1
  746. grap.nolace8b
  747.     cmp.w    pic_hgt(a2),d1        ;hoger dan view ?
  748.     bgt.s    grap.small
  749.     cmp.w    pic_hgt(a3),d1        ;hoger dan view ?
  750.     bgt.s    grap.small
  751.     bra.s    grap.big
  752.  
  753. grap.small
  754.     move.w    pic_hgt(a2),d1        ;wid+hgt<vew
  755.     cmp.w    pic_hgt(a3),d1        ;hoogte gelijk ?
  756.     bne    grap.nopic2
  757.     move.w    pic_wid(a2),d1
  758.     cmp.w    pic_wid(a3),d1        ;breedte gelijk ?
  759.     bne    grap.nopic2
  760.  
  761. grap.big
  762.     move.l    a3,curpic2
  763.     move.l    a3,curpal2
  764.     move.l    a5,currot2
  765.  
  766.     tst.b    dplctr            ;double playfield al gezet ?
  767.     beq.s    grap.nocop
  768.  
  769.     move.w    30(a1),34(a1)        ;modulo copieren
  770.  
  771.     move.w    2(a4),d1        ;bplcon0
  772.     btst    #10,d1            ;al double playfield ?
  773.     beq.s    grap.ta
  774.  
  775.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  776.     move.w    6(a0),14(a0)
  777.  
  778.     move.w    18(a0),26(a0)        ;plane 2>3 copieren
  779.     move.w    22(a0),30(a0)
  780.  
  781.     move.w    34(a0),42(a0)        ;plane 4>5 copieren
  782.     move.w    38(a0),46(a0)
  783.  
  784.     bra.s    grap.tb
  785. grap.ta
  786.     move.w    18(a0),42(a0)        ;plane 2>5 copieren
  787.     move.w    22(a0),46(a0)
  788.  
  789.     move.w    10(a0),26(a0)        ;plane 1>3 copieren
  790.     move.w    14(a0),30(a0)
  791.  
  792.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  793.     move.w    6(a0),14(a0)
  794.  
  795. grap.tb
  796.     move.l    #palette,a3        ;palette copieren
  797.  
  798.     move.w    #8-1,d1
  799. grap.pal
  800.     move.w    (a3)+,14(a3)
  801.     dbra    d1,grap.pal
  802.  
  803. grap.nocop
  804.     add.w    d3,d2
  805.     lsl.w    #8,d2
  806.     lsl.w    #4,d2
  807.     or.w    #$400,d2
  808.     move.w    d2,2(a4)        ;bplcon0
  809.  
  810.     movem.l    d0-d7/a0-a6,-(sp)
  811.  
  812.     move.l    curpic,a2        ;animpic ?
  813.     move.l    curfrm,d7
  814.     cmp.l    #0,a2
  815.     bne.s    grap.noanipic
  816.  
  817.     move.l    curpic2,a2        ;normal pic ?
  818.     move.l    curfrm2,d7
  819.     cmp.l    #0,a2
  820.     beq.s    grap.nodplpic
  821.  
  822. grap.noanipic
  823.     add.l    d6,a0
  824.     add.w    d6,d6
  825.     bsr.s    grappln            ;a2,d6,d7,d0
  826. grap.nodplpic
  827.     movem.l    (sp)+,d0-d7/a0-a6
  828.     add.w    d6,d6
  829.     bra.s    grap.nodpla
  830.  
  831.  
  832. grap.nodpl                ;geen double playfield
  833.     lsl.w    #8,d2
  834.     lsl.w    #4,d2
  835.     move.w    d2,2(a4)        ;bplcon0
  836.  
  837. grap.nodpla
  838.     move.w    d5,30(a1)        ;modulo even
  839.  
  840.     moveq.l    #0,d3
  841.     add.w    pic_vew(a2),d3        ;viewmode add
  842.     moveq.l    #0,d2
  843.     move.w    2(a4),d2
  844.     or.l    d3,d2
  845.     or.l    #$300,d2        ;genlock info
  846.     move.w    d2,2(a4)
  847.     
  848.     bsr.s    grappln            ;a2,d6,d7,d0
  849.  
  850. grap.end
  851.     
  852.     movem.l    (sp)+,d0-d7/a0-a6
  853.     rts
  854.         
  855.  
  856.     ;sets on of the 2 possible pictures to the copper
  857.     ;handles interlace
  858.  
  859.     ;d7=framenummer
  860.     ;d6=copperliststap
  861.     ;d0=raw planes positie
  862.     ;a2=current picture
  863. grappln                    ;planes invullen 
  864.     movem.l    d0-d7/a0-a6,-(sp)
  865.  
  866.     lea    pic_raw(a2),a1
  867.     move.l    a1,d0            ;raw planes
  868.     
  869.     moveq.l    #0,d2            ;x*y
  870.     move.w    pic_wid(a2),d2
  871.     lsr.l    #1,d2            ;/2
  872.     moveq.l    #0,d3
  873.     move.w    pic_hgt(a2),d3
  874.     muls    d3,d2
  875.     
  876.     move.l    d2,d4
  877.     add.l    d2,d2
  878.  
  879.     move.w    pic_dpt(a2),d3
  880.     muls    d3,d4            ;hele picture size
  881.     muls    d7,d4            ;frame*size d7 !
  882.  
  883.     add.l    d4,d4
  884.  
  885.     add.l    d4,d0
  886.  
  887.     move.l    #vew_wid,d5        ;max x view
  888.     move.l    hogscr,d4        ;max y view
  889.     move.w    pic_vew(a2),d1        ;viewmode add
  890.     btst    #2,d1
  891.     beq.s    grappln.nolace
  892.     add.l    d4,d4            ;max y view
  893. grappln.nolace
  894.     btst    #15,d1            ;hires ?
  895.     beq.s    grappln.nohi
  896.     move.l    #vew_wid*2,d5        ;max x view
  897. grappln.nohi
  898.     btst    #6,d1            ;super hires ?
  899.     beq.s    grappln.noshi
  900.     move.l    #vew_wid*4,d5        ;max x view
  901. grappln.noshi
  902.  
  903.     moveq.l    #0,d3            ;scherm centreren
  904.     move.w    pic_wid(a2),d3        ;pic breedte in bytes
  905.     cmp.w    d5,d3            ;breder dan scherm ?
  906.     ble.s    grappln.qa
  907.     sub.w    d5,d3            ;-scherm breedte
  908.     lsr.w    #2,d3            ;/4
  909.  
  910.     add.l    d3,d3
  911.  
  912.     add.l    d3,d0
  913. grappln.qa
  914.     move.w    pic_hgt(a2),d3        ;pic hoogte in bytes
  915.     cmp.w    d4,d3            ;hoger dan scherm ?
  916.     ble.s    grappln.qb
  917.     sub.w    d4,d3            ;-scherm breedte
  918.     lsr.w    #1,d3            ;/2
  919.     moveq.l    #0,d5
  920.     move.w    pic_wid(a2),d5        ;pic breedte in bytes
  921.     muls    pic_dpt(a2),d5
  922.     muls    d5,d3
  923.     add.l    d3,d0
  924. grappln.qb
  925.     moveq.l    #0,d2
  926.     move.w    pic_wid(a2),d2
  927.  
  928.     move.w    pic_vew(a2),d5        ;interlace flipping ?
  929.     btst    #2,d5
  930.     beq.s    grappln.nolac7b
  931.  
  932.     move.w    $04(a6),d5        ;even/oneven ?
  933.     btst    #15,d5
  934.     beq.s    grappln.nolac7b
  935.     
  936.     moveq.l    #0,d3
  937.     move.w    pic_wid(a2),d3
  938.     muls    pic_dpt(a2),d3
  939.     add.l    d3,d0
  940. grappln.nolac7b
  941.  
  942.     move.w    pic_dpt(a2),d1        ;plnnummer 1 halen
  943.     tst.w    d1            ;0 planes ?
  944.     beq.s    grappln.end
  945.     sub.w    #1,d1
  946. grappln.a
  947.     move.w    d0,3*2(a0)
  948.     swap    d0
  949.     move.w    d0,1*2(a0)
  950.     swap    d0
  951.     add.l    d6,a0            ;d6=copper step !
  952.     add.l    d2,d0
  953.     dbra    d1,grappln.a
  954. grappln.end
  955.     movem.l    (sp)+,d0-d7/a0-a6
  956.     rts
  957.  
  958.     ;sets palettes to copper
  959.     
  960. grac
  961.     movem.l    d0-d7/a0-a6,-(sp)
  962.  
  963.     lea    curpal1,a3        ;palette 1
  964.     move.l    #palette,a1
  965.     bsr.s    gracfrm
  966.  
  967.     lea    curpal2,a3        ;palette 2 (dpl)
  968.     move.l    #8*2+palette,a1
  969.     bsr.s    gracfrm
  970.     
  971.     bsr.s    palctr            ;palette-buffer to copper
  972. grac.end
  973.     movem.l    (sp)+,d0-d7/a0-a6
  974.     rts
  975.         
  976.     ;moves palette from picture to palette-buffer
  977.  
  978. gracfrm
  979.     movem.l    d0-d7/a0-a6,-(sp)
  980.     tst.l    (a3)            ;palette aanwezig ?
  981.     beq.s    gracfrm.end
  982.  
  983.     move.l    (a3),a2            ;current palette
  984.     
  985.     cmp.l    #'PALE',(a2)        ;palette ?
  986.     bne.s    gracfrm.pict
  987.     lea    6(a2),a0        ;palette
  988.     move.w    4(a2),d0        ;aantal kleuren
  989.     bra.s    gracfrm.col
  990. gracfrm.pict
  991.     cmp.l    #'ANIM',(a2)        ;animatie ?
  992.     bne.s    gracfrm.noanim
  993.  
  994.     moveq.l    #0,d1
  995.     move.w    pic_ani(a2),d1
  996.     bclr    #7,d1            ;behandelbit weghalen
  997.  
  998.     moveq.l    #0,d3
  999.     move.w    pic_wid(a2),d3
  1000.     lsr.w    #1,d3            ;/2
  1001.     muls    pic_hgt(a2),d3
  1002.     muls    pic_dpt(a2),d3
  1003.  
  1004.     add.l    d3,d3
  1005.  
  1006.     add.l    #pic_raw,d3
  1007.     move.l    d3,d5
  1008.  
  1009.     btst    #0,d1
  1010.     bne.s    gracfrm.buf2
  1011.     moveq.l    #0,d5
  1012. gracfrm.buf2
  1013.     add.l    d5,a2
  1014. gracfrm.noanim
  1015.     lea    pic_pal(a2),a0        ;palette
  1016.     move.w    pic_palnum(a2),d0
  1017.  
  1018.     cmp.w    #32-1,d0        ;niet meer dan 32 kleuren
  1019.     ble    gracfrm.sub
  1020.     move.w    #32-1,d0
  1021. gracfrm.sub
  1022.  
  1023.     tst.w    d0            ;0 planes ?
  1024.     beq.s    gracfrm.end
  1025. gracfrm.col
  1026. gracfrm.fa
  1027.     move.w    (a0)+,(a1)+
  1028.     dbra    d0,gracfrm.fa
  1029. gracfrm.end
  1030.     movem.l    (sp)+,d0-d7/a0-a6
  1031.     rts
  1032.     
  1033.     ;handles colorcycling in the palette-buffer
  1034.     ;and copies palette-buffer to copper
  1035.  
  1036. palctr
  1037.     movem.l    d0-d7/a0-a6,-(sp)
  1038.  
  1039.     move.l    curpic1,a2        ;current raw
  1040.     cmp.l    #0,a2
  1041.     beq.s    palctr.qb
  1042.     lea    cycdel1,a3        ;cycle delays
  1043.     move.l    #palette,a4
  1044.     bsr    palcyc
  1045. palctr.qb
  1046.     move.l    curpic2,a2        ;current raw
  1047.     cmp.l    #0,a2
  1048.     beq.s    palctr.c
  1049.     lea    cycdel2,a3        ;cycle delays
  1050.     move.l    #8*2+palette,a4
  1051.     bsr    palcyc
  1052.  
  1053. palctr.c
  1054.     lea    gracprcol,a1
  1055.     move.l    #palette,a0
  1056.  
  1057.     move.w    00(a0),00*4+2(a1)
  1058.     move.w    02(a0),01*4+2(a1)
  1059.     move.w    04(a0),02*4+2(a1)
  1060.     move.w    06(a0),03*4+2(a1)
  1061.     move.w    08(a0),04*4+2(a1)
  1062.     move.w    10(a0),05*4+2(a1)
  1063.     move.w    12(a0),06*4+2(a1)
  1064.     move.w    14(a0),07*4+2(a1)
  1065.     move.w    16(a0),08*4+2(a1)
  1066.     move.w    18(a0),09*4+2(a1)
  1067.  
  1068.     move.w    20(a0),10*4+2(a1)
  1069.     move.w    22(a0),11*4+2(a1)
  1070.     move.w    24(a0),12*4+2(a1)
  1071.     move.w    26(a0),13*4+2(a1)
  1072.     move.w    28(a0),14*4+2(a1)
  1073.     move.w    30(a0),15*4+2(a1)
  1074.     move.w    32(a0),16*4+2(a1)
  1075.     move.w    34(a0),17*4+2(a1)
  1076.     move.w    36(a0),18*4+2(a1)
  1077.     move.w    38(a0),19*4+2(a1)
  1078.  
  1079.     move.w    40(a0),20*4+2(a1)
  1080.     move.w    42(a0),21*4+2(a1)
  1081.     move.w    44(a0),22*4+2(a1)
  1082.     move.w    46(a0),23*4+2(a1)
  1083.     move.w    48(a0),24*4+2(a1)
  1084.     move.w    50(a0),25*4+2(a1)
  1085.     move.w    52(a0),26*4+2(a1)
  1086.     move.w    54(a0),27*4+2(a1)
  1087.     move.w    56(a0),28*4+2(a1)
  1088.     move.w    58(a0),29*4+2(a1)
  1089.  
  1090.     move.w    60(a0),30*4+2(a1)
  1091.     move.w    62(a0),31*4+2(a1)
  1092.  
  1093.     movem.l    (sp)+,d0-d7/a0-a6
  1094.     rts
  1095.  
  1096.     ;colorcyclinghandling of a palette
  1097.  
  1098. palcyc
  1099.     movem.l    d0-d7/a0-a6,-(sp)
  1100.     move.w    #4-1,d7            ;4 cycles
  1101. palcyc.d
  1102.     tst.w    (a3)+            ;delay klaar ?
  1103.     bne.s    palcyc.c
  1104.     
  1105.     moveq.l    #0,d1
  1106.     move.b    pic_cycstr(a2),d1    ;start color
  1107.     lsl.b    #1,d1        ;*2
  1108.  
  1109.     moveq.l    #0,d2
  1110.     move.b    pic_cycend(a2),d2    ;end color
  1111.     lsl.b    #1,d2        ;*2
  1112.  
  1113.     moveq.l    #0,d3
  1114.     move.b    pic_cycadd(a2),d3    ;richting
  1115.  
  1116.     move.l    a4,a0            ;palette pointer
  1117.     move.l    a0,a1
  1118.     add.l    d1,a0            ;startcolor
  1119.     add.l    d2,a1            ;endcolor
  1120.     
  1121.     cmp.b    #1,d3            ;omhoog
  1122.     beq.s    palcyc.up
  1123.     cmp.b    #3,d3            ;omlaag
  1124.     beq.s    palcyc.down
  1125.     bra.s    palcyc.i
  1126.  
  1127. palcyc.up                ;kleuren copieren
  1128.     move.w    (a1),d4            ;laatst color bewaren
  1129. palcyc.f                ;kleuren copieren
  1130.     cmp.l    a0,a1
  1131.     beq.s    palcyc.fa
  1132.     move.w    -(a1),2(a1)
  1133.     bra    palcyc.f
  1134. palcyc.fa
  1135.     move.w    d4,(a1)
  1136.     bra.s    palcyc.g    
  1137.     
  1138. palcyc.down
  1139.     move.w    (a0),d4            ;laatst color bewaren
  1140. palcyc.h                ;kleuren copieren
  1141.     cmp.l    a0,a1
  1142.     beq.s    palcyc.ha
  1143.     move.w    2(a0),(a0)+
  1144.     bra    palcyc.h
  1145. palcyc.ha
  1146.     move.w    d4,(a1)
  1147.  
  1148. palcyc.g
  1149.     move.b    pic_cycspd(a2),-1(a3)    ;delay zetten
  1150.     bra.s    palcyc.i
  1151. palcyc.c
  1152.     sub.w    #1,-2(a3)        ;cycle delay aftellen
  1153. palcyc.i
  1154.     add.l    #4,a2            ;next cycle info
  1155.     dbra    d7,palcyc.d
  1156.  
  1157. palcyc.qb
  1158.     movem.l    (sp)+,d0-d7/a0-a6
  1159.     rts
  1160.  
  1161.  
  1162. ;    SECTION    variabelen,DATA_c
  1163.  
  1164.     cnop    0,2
  1165. curtsk        dc.l    0
  1166. tskpri        dc.l    0
  1167. duplok        dc.l    0
  1168. inttel        dc.l    0
  1169. intdel        dc.l    0
  1170.  
  1171. form        dc.l    0
  1172. ifffil        dc.l    0
  1173. intvbold    dc.l    0
  1174. inttbeold    dc.l    0
  1175. patpos        dc.l    0
  1176. gfxlib        dc.l    0
  1177. doslib        dc.l    0
  1178. wbview      dc.l    0
  1179. mt_data        dc.l    0
  1180. memvid        dc.l    0
  1181. oldcprlist    dc.l    0
  1182. hogscr        dc.l    vew_hgt
  1183.  
  1184. inspos        dc.l    -1
  1185. anispd1        dc.w    1    ;nooit op 0 !
  1186. anispd2        dc.w    1
  1187.  
  1188.         cnop    0,2
  1189. varclr.s            ;start wissen
  1190. oldrot        dc.l    0
  1191. curpic        dc.l    0
  1192. curfrm        dc.l    0
  1193. cycdel1        ds.w    4
  1194. cycdel2        ds.w    4
  1195.  
  1196. rotinf1        dc.w    0
  1197. rotinf2        dc.w    0
  1198.  
  1199. effspd        dc.w    0
  1200. efflop        dc.b    0
  1201. anilop1        dc.b    0
  1202. anilop2        dc.b    0
  1203. anipal1        dc.b    0
  1204. anipal2        dc.b    0
  1205. rotdpl        dc.b    1
  1206. dplctr        dc.b    0
  1207.         cnop    0,2
  1208.  
  1209. insdat        ds.l    4
  1210. inspri        dc.l    0
  1211. instel        dc.w    0
  1212.  
  1213. cureff        dc.l    0
  1214. efftel        dc.w    0
  1215.  
  1216. curpal1        dc.l    0
  1217. curpal2        dc.l    0
  1218. currot1        dc.l    0
  1219. currot2        dc.l    0
  1220. curpic1        dc.l    0
  1221. curpic2        dc.l    0
  1222. anitel1        dc.w    0
  1223. anitel2        dc.w    0
  1224. curfrm1        dc.l    0
  1225. curfrm2        dc.l    0
  1226. oldfrm1        dc.l    0
  1227. oldfrm2        dc.l    0
  1228.  
  1229. varclr.e
  1230.         dc.l    0            ;wisruimte
  1231.     
  1232. varclr.ql    equ    varclr.e-varclr.s    ;wislengte
  1233.     
  1234. ;ownblit    dc.b    0
  1235. ntscmode    dc.b    0
  1236. end        dc.b    0
  1237.  
  1238. pronam    dc.b    'VideoTracker',0
  1239.     cnop    0,2
  1240. dosnam    dc.b    'dos.library',0
  1241.     cnop    0,4
  1242. gfxnam    dc.b    'graphics.library',0
  1243.     cnop    0,4
  1244.     
  1245.     cnop    0,4
  1246. gra.s
  1247. gracprscr
  1248.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1249. gracprbpl
  1250.     dc.w    $100,$9000,$102,$0000,$104,$0020
  1251.     dc.w    $108,$0000,$10a,$0000
  1252. gracprpln
  1253.     dc.w    $e0,$0000,$e2,$0000
  1254.     dc.w    $e4,$0000,$e6,$0000
  1255.     dc.w    $e8,$0000,$ea,$0000
  1256.     dc.w    $ec,$0000,$ee,$0000
  1257.     dc.w    $f0,$0000,$f2,$0000
  1258.     dc.w    $f4,$0000,$f6,$0000
  1259. gracprcol
  1260.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1261.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1262.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1263.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1264. cprjmp
  1265.     dc.w    $080,0,$082,0
  1266. gra.e
  1267. gra.ql    equ    gra.e-gra.s        ;block lengte
  1268.  
  1269.  
  1270. cpr
  1271.     dc.w    $0001,$fffe
  1272.     dc.w    $09c,$8001        ;tbeint
  1273. cprspr
  1274.     dc.w    $120,$0000,$122,$0000
  1275.     dc.w    $124,$0000,$126,$0000
  1276.     dc.w    $128,$0000,$12a,$0000
  1277.     dc.w    $12c,$0000,$12e,$0000
  1278.     dc.w    $130,$0000,$132,$0000
  1279.     dc.w    $134,$0000,$136,$0000
  1280.     dc.w    $138,$0000,$13a,$0000
  1281.     dc.w    $13c,$0000,$13e,$0000
  1282.  
  1283. cprbuf
  1284.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1285.     dc.w    $100,$9000,$102,$0000,$104,$0020
  1286.     dc.w    $108,$0000,$10a,$0000
  1287.     dc.w    $e0,$0000,$e2,$0000
  1288.     dc.w    $e4,$0000,$e6,$0000
  1289.     dc.w    $e8,$0000,$ea,$0000
  1290.     dc.w    $ec,$0000,$ee,$0000
  1291.     dc.w    $f0,$0000,$f2,$0000
  1292.     dc.w    $f4,$0000,$f6,$0000
  1293.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1294.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1295.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1296.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1297.     dc.w    $080,0,$082,0
  1298. cprbuf.e
  1299.  
  1300.     dc.w    $088,$0000        ;copjmp2
  1301.     dc.w    $080,0,$082,0        ;moet achter cprbck blijven !
  1302. cprbck
  1303. sprdat
  1304.     dc.w    $ffff,$fffe
  1305.  
  1306.  
  1307. prf_pat    equ    7            ;pref sample size
  1308. prf_patnum    equ    128        ;aantal songpos's
  1309. prf_len    equ    ((prf_pat*prf_patnum)+1)
  1310.  
  1311. prf_pos    equ    0            ;eff position (teller)
  1312.  
  1313. prf_effs    equ    1        ;start effect (*prf_patnum)
  1314. prf_effe    equ    2        ;end effect   (*prf_patnum)
  1315. prf_pri    equ    3            ;priority     (*prf_patnum)
  1316. prf_spd    equ    4            ;eff speed    (*prf_patnum)
  1317. prf_ani    equ    5            ;ani speed    (*prf_patnum)
  1318. prf_roth    equ    6        ;routine info (*prf_patnum)
  1319. prf_rotl    equ    7        ;routine info (*prf_patnum)
  1320.  
  1321. eff_num    equ    256            ;aantal effects
  1322.  
  1323. pic_wid        equ    4        ;wide in bytes
  1324. pic_hgt        equ    6        ;hoogte
  1325. pic_dpt        equ    8        ;number planes
  1326. pic_ani        equ    10        ;aantal effes (anim)
  1327. pic_vew        equ    12        ;viewmode
  1328. pic_cycstr    equ    14        ;cycle start (*4)
  1329. pic_cycend    equ    15        ;cycle end (*4)
  1330. pic_cycspd    equ    16        ;cycle speed (*4)
  1331. pic_cycadd    equ    17        ;cycle add (*4)
  1332. pic_palnum    equ    30        ;aantal kleuren
  1333. pic_pal        equ    32        ;palette start
  1334. pic_palsiz    equ    256*2        ;vaste palette size
  1335. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  1336.  
  1337. fil_namlen    equ    24        ;naamlengte
  1338. fil_len    equ    (fil_namlen+4+4)    ;effect info length
  1339. fil_num    equ    2+eff_num        ;aantal files
  1340. fil_fil    equ    0            ;file naam 
  1341. fil_dir    equ    24            ;pointer naar directory
  1342. fil_pnt    equ    28            ;pointer naar meminfo
  1343.  
  1344. palette    ds.w    64    ;palette
  1345.  
  1346. var_len        equ    $300        ;lengte vartabel
  1347.  
  1348. var__GfxBase    equ    $000        ;graphics lib
  1349. var_pic1    equ    $004        ;current picture
  1350. var_anispd1    equ    $008        ;animspeed
  1351. var_anitel1    equ    $00c        ;animspeed
  1352. var_cprbck    equ    $010        ;copperback
  1353. var_bck        equ    $014        ;background
  1354. var_pic2    equ    $018        ;current picture
  1355. var_ntsc    equ    $01c        ;ntsc/pal frequence
  1356. var_lnd        equ    $020        ;landscape
  1357. var_txt1    equ    $040        ;text
  1358. var_txt16    equ    15*4+var_txt1
  1359. var_vec1    equ    $080        ;vectors
  1360. var_vec16    equ    15*4+var_vec1
  1361. var_fon1    equ    $0c0        ;fonts
  1362. var_fon16    equ    15*4+var_fon1
  1363. var_cols1    equ    $100        ;colorsets
  1364. var_cols16    equ    15*4+var_cols1
  1365. var_obj1    equ    $180        ;objects
  1366. var_obj16    equ    15*4+var_obj1
  1367.  
  1368.     cnop    0,2
  1369. var    ds.b    $300    ;variabelen voor routines
  1370.  
  1371.     
  1372. ;    SECTION    10,CODE_C
  1373.         endc
  1374.  
  1375. ; this is the routine-source
  1376. ;**********************************************************************
  1377.  
  1378.         ifnd    rout
  1379. pic_wid        equ    4        ;wide in bytes
  1380. pic_hgt        equ    6        ;hoogte
  1381. pic_dpt        equ    8        ;number planes
  1382. pic_ani        equ    10        ;aantal effes (anim)
  1383. pic_vew        equ    12        ;viewmode
  1384. pic_cycstr    equ    14        ;cycle start (*4)
  1385. pic_cycend    equ    15        ;cycle end (*4)
  1386. pic_cycspd    equ    16        ;cycle speed (*4)
  1387. pic_cycadd    equ    17        ;cycle add (*4)
  1388. pic_palnum    equ    30        ;aantal kleuren
  1389. pic_pal        equ    32        ;palette start
  1390. pic_palsiz    equ    256*2        ;vaste palette size
  1391. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  1392.  
  1393. var_len        equ    $300        ;lengte vartabel
  1394.  
  1395. var__GfxBase    equ    $000        ;graphics lib
  1396. var_pic1    equ    $004        ;current picture
  1397. var_anispd1    equ    $008        ;animspeed
  1398. var_anitel1    equ    $00c        ;animspeed
  1399. var_cprbck    equ    $010        ;copperback
  1400. var_bck        equ    $014        ;background
  1401. var_pic2    equ    $018        ;current picture
  1402. var_ntsc    equ    $01c        ;ntsc/pal frequence
  1403. var_lnd        equ    $020        ;landscape
  1404. var_txt1    equ    $040        ;text
  1405. var_txt16    equ    15*4+var_txt1
  1406. var_vec1    equ    $080        ;vectors
  1407. var_vec16    equ    15*4+var_vec1
  1408. var_fon1    equ    $0c0        ;fonts
  1409. var_fon16    equ    15*4+var_fon1
  1410. var_cols1    equ    $100        ;colorsets
  1411. var_cols16    equ    15*4+var_cols1
  1412. var_obj1    equ    $180        ;objects
  1413. var_obj16    equ    15*4+var_obj1
  1414.  
  1415. vew_wid    equ    44
  1416. vew_hgt    equ    290
  1417. win_hgt    equ    117
  1418. win_str    equ    $1a
  1419.         endc
  1420.  
  1421. ;    Input:
  1422. ;    a0=variabelen tabel
  1423. ;    d0=routinfo
  1424.  
  1425. ;    Output:
  1426. ;    a0=picture
  1427. ;    d1=copperlist
  1428.  
  1429.     SECTION    3,CODE_C
  1430.  
  1431. rot
  1432.     dc.l    'ROUT'
  1433.     movem.l    d2-d7/a1-a6,-(sp)
  1434.  
  1435.     lea    ($dff000).l,a6    ;hardware
  1436.     lea    rot,a5        ;prog base
  1437.  
  1438.     move.l    d0,d1
  1439.     divs    #256,d1
  1440.     and.l    #$ffff,d1
  1441. ;    move.l    d1,rotshp2-rot(a5)    ;sinusshape pic 2
  1442.     muls    #256,d1
  1443.     sub.l    d1,d0
  1444.  
  1445.     move.l    d0,d1
  1446.     divs    #16,d1
  1447.     and.l    #$ffff,d1
  1448.     move.l    d1,rotshp2-rot(a5)    ;sinusshape pic 2
  1449.     muls    #16,d1
  1450.     sub.l    d1,d0
  1451.  
  1452.     move.l    d0,rotshp1-rot(a5)    ;sinusshape pic 1
  1453.  
  1454.     move.l    var_cprbck(a0),a2
  1455.     move.l    a2,d1
  1456.     sub.l    #8,d1
  1457.  
  1458.     lea    rotcop.1,a1        ;copperjump adres zetten
  1459.     add.l    rotbuf-rot(a5),a1
  1460.     move.w    d1,6(a1)
  1461.     swap    d1
  1462.     move.w    d1,2(a1)
  1463.  
  1464.     bsr    rotset
  1465.     
  1466.     sub.l    a0,a0            ;geen pic
  1467.     move.l    #rotincpic,a0        ;incbinfile !!!
  1468.  
  1469.     lea    rotcop.1,a1        ;copperlist
  1470.     add.l    rotbuf-rot(a5),a1
  1471.     eor.l    #rotcop.2-rotcop.1,rotbuf-rot(a5)
  1472.     move.l    a1,d1
  1473.     movem.l    (sp)+,d2-d7/a1-a6
  1474.     rts
  1475.  
  1476. rotset
  1477.     movem.l    d0-d7/a0-a6,-(sp)
  1478.  
  1479.     tst.l    var_pic1(a0)    ;is there a picture ?
  1480.     beq    rotset.end
  1481.  
  1482.     clr.l    d2        ;$102 bitshift
  1483.  
  1484.     move.l    var_pic1(a0),a1    ;get picture
  1485.     lea    pic_raw(a1),a3    ;start picture planes
  1486.     move.l    a3,d1
  1487.     move.l    d1,d5        ;plane1 naar plane2 copieren
  1488.  
  1489.     clr.l    d3
  1490.     move.w    pic_wid(a1),d3    ;skip voor plane1
  1491.     
  1492.     move.l    rotshp1-rot(a5),d0    ;shape number
  1493.     muls    #4*4,d0
  1494.     lea    rotshptab,a2    ;sinus shape table
  1495.     lea    (a2,d0),a2
  1496.     bsr    rotget        ;a1,a2,d1=d2,d1
  1497.     exg.l    d1,d5        ;store pic1, get frsh pic1
  1498.     ror.l    #4,d2        ;store bitshift
  1499.  
  1500.     move.l    rotshp2-rot(a5),d0    ;shape number
  1501.     muls    #4*4,d0
  1502.     lea    4*4*16+rotshptab,a2    ;sinus shape table
  1503.     lea    (a2,d0),a2
  1504.  
  1505.     tst.l    var_pic2(a0)    ;is there double playfield ?
  1506.     bne    rotset.dpl
  1507.  
  1508.     add.l    d3,d1        ;get plane2 from pic1
  1509.     lsl.l    #1,d3        ;*2 double skip
  1510.     move.l    d3,d4        ;planeskip copieren
  1511.     bsr    rotget        ;a1,a2,d1=d2,d1
  1512.     bra    rotset.pln
  1513. rotset.dpl
  1514.     move.l    var_pic2(a0),a1    ;pic halen
  1515.     lea    pic_raw(a1),a3
  1516.     move.l    a3,d1        ;raw planes halen
  1517.     clr.l    d4        ;skip halen
  1518.     move.w    pic_wid(a1),d4
  1519.     bsr    rotget        ;a1,a2,d1=d2,d1
  1520.     
  1521. rotset.pln
  1522.     rol.l    #4,d2        ;get complete bitshift
  1523.     lea    rotcop.1,a3
  1524.     add.l    rotbuf-rot(a5),a3
  1525.     move.w    d2,$0a(a3)
  1526.  
  1527.     move.w    #3-1,d0
  1528. rotset.a    
  1529.     move.w    d5,$12(a3)
  1530.     swap    d5
  1531.     move.w    d5,$0e(a3)
  1532.     swap    d5
  1533.  
  1534.     move.w    d1,$1a(a3)
  1535.     swap    d1
  1536.     move.w    d1,$16(a3)
  1537.     swap    d1
  1538.  
  1539.     add.l    #16,a3
  1540.     add.l    d3,d5
  1541.     add.l    d4,d1
  1542.     
  1543.     dbra    d0,rotset.a    
  1544.     bra    rotset.end
  1545.  
  1546. rotset.end
  1547.     movem.l    (sp)+,d0-d7/a0-a6
  1548.     rts
  1549.     
  1550.     ;a1    picture
  1551.     ;d1    rawplanes
  1552.     ;a2    sinusinfo
  1553.     
  1554. rotget
  1555.     movem.l    d3-d7/a0-a6,-(sp)
  1556.  
  1557.     lea    rotsin,a3
  1558.     
  1559.     move.l    (a2),d0        ;get current x-pos
  1560.     clr.l    d3
  1561.     move.w    (a3,d0),d3        ;get sinus value
  1562.  
  1563.     clr.l    d4
  1564.     move.w    pic_wid(a1),d4    ;pic width in bytes
  1565.     lsl.l    #3,d4        ;*8
  1566.  
  1567.     move.l    #vew_wid*8,d7
  1568.     btst    #15-8,pic_vew(a1)
  1569.     beq    rotget.bc
  1570.     move.l    #vew_wid*8*2,d7
  1571. rotget.bc
  1572.     sub.l    d7,d4        ;-vewwidth
  1573.  
  1574.     cmp.w    #0,d4        ;<0 ?
  1575.     bge    rotget.ba
  1576.     clr.l    d4
  1577. rotget.ba
  1578.     muls    d4,d3
  1579.     lsr.l    #8,d3        ;/1024
  1580.     lsr.l    #2,d3
  1581.     
  1582.     divs    #16,d3
  1583.     swap    d3
  1584.     move.w    #$f,d4
  1585.     sub.w    d3,d4
  1586.     or.w    d4,d2        ;bitshift $102
  1587.  
  1588.     clr.w    d3
  1589.     swap    d3
  1590.     lsl.l    #1,d3        ;*2
  1591.     add.l    d3,d1        ;raw+x
  1592.     add.l    8(a2),d0        ;+ sinusadd
  1593.     cmp.l    #rotsin.e-rotsin,d0
  1594.     blt    rotget.bb
  1595.     sub.l    #rotsin.e-rotsin,d0
  1596. rotget.bb
  1597.     move.l    d0,(a2)        ;return position
  1598.     
  1599.     move.l    4(a2),d0        ;get current y-pos
  1600.     clr.l    d3
  1601.     move.w    (a3,d0),d3        ;get sinus value
  1602.  
  1603.     clr.l    d4
  1604.     move.w    pic_hgt(a1),d4    ;pic heigth
  1605.  
  1606.     move.l    #vew_hgt,d7
  1607.     cmp.b    #50,var_ntsc(a0)    ;ntsc check
  1608.     beq    rotget.pal
  1609.     sub.l    #56,d7
  1610. rotget.pal
  1611.  
  1612.     btst    #2,pic_vew(a1)
  1613.     beq    rotget.cc
  1614.     add.l    d7,d7
  1615. rotget.cc
  1616.     sub.l    d7,d4        ;-vewheigth
  1617.  
  1618.     cmp.w    #0,d4        ;<0 ?
  1619.     bge    rotget.ca
  1620.     clr.l    d4
  1621. rotget.ca
  1622.     muls    d4,d3
  1623.     lsr.l    #8,d3        ;/1024
  1624.     lsr.l    #2,d3
  1625.     
  1626.     clr.l    d4
  1627.     move.w    pic_wid(a1),d4    ;*width
  1628.     muls    pic_dpt(a1),d4    ;*depth
  1629.     muls    d4,d3
  1630.     
  1631.     add.l    d3,d1        ;raw+y
  1632.     add.l    12(a2),d0        ;+ sinusadd
  1633.     cmp.l    #rotsin.e-rotsin,d0
  1634.     blt    rotget.c
  1635.     sub.l    #rotsin.e-rotsin,d0
  1636. rotget.c
  1637.     move.l    d0,4(a2)        ;return position
  1638.  
  1639.     movem.l    (sp)+,d3-d7/a0-a6
  1640.     rts
  1641.     
  1642.  
  1643. rotbuf    dc.l    0
  1644. rotshp1    dc.l    0
  1645. rotshp2    dc.l    0
  1646.  
  1647.     ;    posx    posy    spdx    spdy
  1648. rotshptab
  1649.     rept    2
  1650.     dc.l    0,    0,    0,    0    ;0 stil
  1651.     dc.l    0,    0,    2,    0    ;1 -
  1652.     dc.l    0,    0,    0,    2    ;2 |
  1653.     dc.l    0,    180*2,    2,    2    ;3 o
  1654.     dc.l    180*2,    0,    2,    4    ;4 (X)
  1655.     dc.l    0,    180*2,    4,    2    ;5 8
  1656.     dc.l    0,    180*2,    4,    6    ;6 weird
  1657.     dc.l    0,    0,    0,    0    ;7
  1658.     dc.l    0,    0,    0,    0    ;8
  1659.     dc.l    0,    0,    0,    0    ;9
  1660.     dc.l    0,    0,    0,    0    ;10
  1661.     dc.l    0,    0,    0,    0    ;11
  1662.     dc.l    0,    0,    0,    0    ;12
  1663.     dc.l    0,    0,    0,    0    ;13
  1664.     dc.l    0,    0,    0,    0    ;14
  1665.     dc.l    0,    0,    0,    0    ;15
  1666.     endr
  1667.         
  1668. rotsin
  1669.        dc.w       512,516,521,525,530,534,539,543,548,552,557,561
  1670.        dc.w       565,570,574,579,583,588,592,596,601,605,610,614
  1671.        dc.w       618,623,627,631,636,640,644,649,653,657,661,666
  1672.        dc.w       670,674,678,683,687,691,695,699,703,708,712,716
  1673.        dc.w       720,724,728,732,736,740,744,748,752,756,760,764
  1674.        dc.w       768,771,775,779,783,787,790,794,798,801,805,809
  1675.        dc.w       812,816,820,823,827,830,834,837,840,844,847,851
  1676.        dc.w       854,857,861,864,867,870,873,876,880,883,886,889
  1677.        dc.w       892,895,898,901,903,906,909,912,915,917,920,923
  1678.        dc.w       925,928,931,933,936,938,941,943,945,948,950,952
  1679.        dc.w       955,957,959,961,963,965,967,969,971,973,975,977
  1680.        dc.w       979,981,982,984,986,987,989,991,992,994,995,997
  1681.        dc.w       998,999,1001,1002,1003,1004,1006,1007,1008,1009,1010,1011
  1682.        dc.w       1012,1013,1014,1014,1015,1016,1017,1017,1018,1019,1019,1020
  1683.        dc.w       1020,1021,1021,1021,1022,1022,1022,1023,1023,1023,1023,1023
  1684.        dc.w       1023,1023,1023,1023,1023,1023,1022,1022,1022,1021,1021,1021
  1685.        dc.w       1020,1020,1019,1019,1018,1017,1017,1016,1015,1014,1014,1013
  1686.        dc.w       1012,1011,1010,1009,1008,1007,1006,1004,1003,1002,1001,999
  1687.        dc.w       998,997,995,994,992,991,989,987,986,984,982,981
  1688.        dc.w       979,977,975,973,971,969,967,965,963,961,959,957
  1689.        dc.w       955,952,950,948,945,943,941,938,936,933,931,928
  1690.        dc.w       925,923,920,917,915,912,909,906,903,901,898,895
  1691.        dc.w       892,889,886,883,880,876,873,870,867,864,861,857
  1692.        dc.w       854,851,847,844,840,837,834,830,827,823,820,816
  1693.        dc.w       812,809,805,801,798,794,790,787,783,779,775,771
  1694.        dc.w       768,764,760,756,752,748,744,740,736,732,728,724
  1695.        dc.w       720,716,712,708,703,699,695,691,687,683,678,674
  1696.        dc.w       670,666,661,657,653,649,644,640,636,631,627,623
  1697.        dc.w       618,614,610,605,601,596,592,588,583,579,574,570
  1698.        dc.w       565,561,557,552,548,543,539,534,530,525,521,516
  1699.        dc.w       512,508,503,499,494,490,485,481,476,472,467,463
  1700.        dc.w       459,454,450,445,441,436,432,428,423,419,414,410
  1701.        dc.w       406,401,397,393,388,384,380,375,371,367,363,358
  1702.        dc.w       354,350,346,341,337,333,329,325,321,316,312,308
  1703.        dc.w       304,300,296,292,288,284,280,276,272,268,264,260
  1704.        dc.w       257,253,249,245,241,237,234,230,226,223,219,215
  1705.        dc.w       212,208,204,201,197,194,190,187,184,180,177,173
  1706.        dc.w       170,167,163,160,157,154,151,148,144,141,138,135
  1707.        dc.w       132,129,126,123,121,118,115,112,109,107,104,101
  1708.        dc.w       99,96,93,91,88,86,83,81,79,76,74,72
  1709.        dc.w       69,67,65,63,61,59,57,55,53,51,49,47
  1710.        dc.w       45,43,42,40,38,37,35,33,32,30,29,27
  1711.        dc.w       26,25,23,22,21,20,18,17,16,15,14,13
  1712.        dc.w       12,11,10,10,9,8,7,7,6,5,5,4
  1713.        dc.w       4,3,3,3,2,2,2,1,1,1,1,1
  1714.        dc.w       1,1,1,1,1,1,2,2,2,3,3,3
  1715.        dc.w       4,4,5,5,6,7,7,8,9,10,10,11
  1716.        dc.w       12,13,14,15,16,17,18,20,21,22,23,25
  1717.        dc.w       26,27,29,30,32,33,35,37,38,40,42,43
  1718.        dc.w       45,47,49,51,53,55,57,59,61,63,65,67
  1719.        dc.w       69,72,74,76,79,81,83,86,88,91,93,96
  1720.        dc.w       99,101,104,107,109,112,115,118,121,123,126,129
  1721.        dc.w       132,135,138,141,144,148,151,154,157,160,163,167
  1722.        dc.w       170,173,177,180,184,187,190,194,197,201,204,208
  1723.        dc.w       212,215,219,223,226,230,234,237,241,245,249,253
  1724.        dc.w       256,260,264,268,272,276,280,284,288,292,296,300
  1725.        dc.w       304,308,312,316,321,325,329,333,337,341,346,350
  1726.        dc.w       354,358,363,367,371,375,380,384,388,393,397,401
  1727.        dc.w       406,410,414,419,423,428,432,436,441,445,450,454
  1728.        dc.w       459,463,467,472,476,481,485,490,494,499,503,508
  1729.        dc.w       512    
  1730. rotsin.e
  1731.  
  1732. rotcop.1
  1733.     dc.w    $0080,$0000,$0082,$0000
  1734.     dc.w    $0102,$0000
  1735.     dc.w    $00e0,$0000,$00e2,$0000    ;1
  1736.     dc.w    $00e4,$0000,$00e6,$0000    ;2
  1737.     dc.w    $00e8,$0000,$00ea,$0000    ;3
  1738.     dc.w    $00ec,$0000,$00ee,$0000    ;4
  1739.     dc.w    $00f0,$0000,$00f2,$0000    ;5
  1740.     dc.w    $00f4,$0000,$00f6,$0000    ;6
  1741.     dc.w    $0088,$0000
  1742.     dc.w    $ffff,$fffe
  1743. rotcop.2
  1744.     dc.w    $0080,$0000,$0082,$0000
  1745.     dc.w    $0102,$0000
  1746.     dc.w    $00e0,$0000,$00e2,$0000    ;1
  1747.     dc.w    $00e4,$0000,$00e6,$0000    ;2
  1748.     dc.w    $00e8,$0000,$00ea,$0000    ;3
  1749.     dc.w    $00ec,$0000,$00ee,$0000    ;4
  1750.     dc.w    $00f0,$0000,$00f2,$0000    ;5
  1751.     dc.w    $00f4,$0000,$00f6,$0000    ;6
  1752.     dc.w    $0088,$0000
  1753.     dc.w    $ffff,$fffe
  1754.  
  1755. rot.e
  1756.  
  1757. ;**********************************************************************
  1758.  
  1759. ;and here are the incbin-files....
  1760.  
  1761.         ifd    rout
  1762.         cnop    0,2
  1763. rotincpic
  1764.         incbin    'videotracker:effect/circles512_l4.pic'
  1765.         endc
  1766.         
  1767.